#ifndef G_GEOMETRY_RAY_987654321
#define G_GEOMETRY_RAY_987654321
#include "math.h"

class Object
{
public:
	Vec3 origin;
	virtual ~Object() {}
	virtual bool intersect(const Ray& ray, float& dist, Color3& color, Vec3& intersect) = 0;
	virtual Color3 getColor() = 0;
	virtual Vec3 getOrigin() = 0;
	Color3 color;
};

class Sphere : public Object
{
public:
	Sphere() : origin(), radius() {};
	Sphere(const Vec3& ori, const float &rad);
	Sphere(const Vec3& ori, const float &rad, const Color3& col);
	Sphere(float x, float y, float z, const float &rad);
	bool intersect(const Ray& ray, float& dist, Color3& color, Vec3& intersect);
	Color3 getColor();
	Vec3 getOrigin();
	Vec3 origin;
	float radius;
	Color3 color;
};

class Light
{
public:
	Light( Vec3& v ) : origin( v ) {};
	Light( Vec3 v ) : origin( v ) {};
	Light( ) : origin( Vec3() ) {};
	Vec3 origin;
};

#endif
